﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.Configuration;
using PlanningGIS.Win.Controls;
using System.Xml.Linq;
using PlanningGIS.Util.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using PlanningGIS.Util.Data;
using PlanningGIS.Util;
using PlanningGIS.MapSheet;
using System.Runtime.Serialization;

namespace PlanningGIS.Framework.Config
{
    /// <summary>
    /// 作用：系统配置、基本信息、符号化等等类的定义，便于XML文件实例化
    /// </summary>
    [Serializable]
    public class SystemConfig
    {
        /// <summary>
        /// 基本信息
        /// </summary>
        public 基本信息 基本信息 { get; set; }

        /// <summary>
        /// 常用字段
        /// </summary>
        public 常用字段 常用字段 { get; set; }

        /// <summary>
        /// 鹰眼图
        /// </summary>
        public 鹰眼图 鹰眼图 { get; set; }

        /// <summary>
        /// 数据库连接
        /// </summary>
        public List<DbConnectionInfo> DbConnections { get; set; }

        /// <summary>
        /// 符号化
        /// </summary>
        public 符号化 符号化 { get; set; }

        /// <summary>
        /// FTP
        /// </summary>
        public FTP FTP { get; set; }

    }
    /// <summary>
    /// 基本信息
    /// </summary>
    [Serializable]
    public class 基本信息
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public 基本信息()
        {
            this.HasEnCrypt = false;
        }

        /// <summary>
        /// 属性查询结果列表中，数字类型的字段所显示的值的精度
        /// </summary>
        public int 数值显示精度 { get; set; }

        /// <summary>
        /// 加载数据时，TOC上显示要素类名称的类型。0表示显示要素类别名；1表示显示要素类名称
        /// </summary>
        public int 加载数据 { get; set; }

        /// <summary>
        /// 固定比例尺缩放中的默认比例尺
        /// </summary>
        public string 默认比例尺 { get; set; }
        
        /// <summary>
        /// 加密水印
        /// </summary>
        public string 密钥 { get; set; }

        /// <summary>
        /// 是否加密
        /// </summary>
        [XmlAttribute]
        public bool HasEnCrypt { get; set; }
    }

    /// <summary>
    /// 常用字段名称对应表
    /// </summary>
    [Serializable]
    public class 常用字段
    {
        /// <summary>
        /// 代表分类代码的字段名称
        /// </summary>
        public string 分类代码 { get; set; }
        /// <summary>
        /// 代表旋转角度的字段名称
        /// </summary>
        public string 旋转角度 { get; set; }

        /// <summary>
        /// 代码名称的字段名称
        /// </summary>
        public string 名称 { get; set; }
    }
    
    /// <summary>
    /// 鹰眼图
    /// </summary>
    [Serializable]
    public class 鹰眼图
    {
        /// <summary>
        /// 鹰眼类型
        /// </summary>
        public string 鹰眼类型 { get; set; }
        /// <summary>
        /// 类型为0的鹰眼数据源
        /// </summary>
        public string 鹰眼图层 { get; set; }
        /// <summary>
        /// 类型为1的鹰眼数据源
        /// </summary>
        public string 鹰眼模板 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string 缩放比例 { get; set; }
    }

    /// <summary>
    /// location表示符号库的位置，
    /// filedName是指符号化的字段,
    /// category指符号库中的分类，为空指全部分类，
    /// angle是点符号旋转依据字段
    /// RotationType指符号旋转方式
    /// </summary>
    [Serializable]
    public class 符号化
    {
        /// <summary>
        /// 
        /// </summary>
        [XmlAttribute]
        public string 默认符号库 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string 默认规则 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string 符号化字段 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string 角度字段 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string 旋转方式 { get; set; }
    }

    /// <summary>
    /// FTP
    /// </summary>
    [Serializable]
    public class FTP
    {
        /// <summary>
        /// FTP服务器IP地址
        /// </summary>
        public string Server { get; set; }
        
        /// <summary>
        /// FTP端口
        /// </summary>
        public int Port { get; set; }
        
        /// <summary>
        /// 登录的用户名称
        /// </summary>
        public string UserName { get; set; }
        
        /// <summary>
        /// 登录的用户密码
        /// </summary>
        public string Password { get; set; }
        
        /// <summary>
        /// 共享后的目录名称
        /// </summary>
        public string ShareDir { get; set; }

        /// <summary>
        /// 映射到本地的目录
        /// </summary>
        public string LocalPath { get; set; }

    }
    
    /// <summary>
    /// 
    /// </summary>
    [Serializable]
    public class 服务
    {
        /// <summary>
        /// 
        /// </summary>
        public string URL { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string 用户名 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string 密码 { get; set; }
    }

}